package ycl.common.base.mapper;

import ycl.common.base.entity.BaseChannelEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 分类基类数据库层
 *
 * @author YCL
 * @date 2021-08-23 20:30:06
 */
@Mapper
@Repository
public interface BaseChannelMapper<T extends BaseChannelEntity>
		extends BaseDao<T> {

	/**
	 * 根据父id查询所有子节点
	 *
	 * @param tableName 分类的表名
	 * @param id        要查询的id
	 * @return 子节点的集合
	 */
	@Select("select * from ${table} where pid = #{id}")
	List<T> selectByPid(@Param("table") String tableName, @Param("id") Long id);

	/**
	 * 根据子节点的id查询父节点的id
	 *
	 * @param tableName 分类的表名
	 * @param id        要查询的id
	 * @return 父节点的id
	 */
	@Select("select pid from ${table} where id = #{id}")
	T selectPidById(@Param("table") String tableName, @Param("id") Long id);
}
